home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 1.1 KB | 57 lines | [TEXT/CWIE] |
- // PointerTo.h
-
- #ifndef PointerTo_h
- #define PointerTo_h
-
- #ifndef Integers_h
- #include "Integers.h"
- #endif
- #ifndef Assert_h
- #include "Assert.h"
- #endif
-
- template < class T >
- class PointerTo
- {
- private:
- T* pointer;
-
- PointerTo( const PointerTo<T>& r ); // These methods intertionally left unimplemented.
- void operator=( const PointerTo<T>& r );
-
- public:
- PointerTo( T* p = 0 ) : pointer( p ) {}
- ~PointerTo()
- {
- if ( pointer != 0 )
- delete pointer;
- }
-
- bool Null() const { return pointer == 0; }
- operator==( T* p ) const { return pointer == p; }
-
- operator T*() const { return pointer; }
-
- T& operator*() const { Assert( pointer != 0 ); return *pointer; }
- T* operator->() const { Assert( pointer != 0 ); return pointer; }
-
- void operator=( T* p ) { Assert( pointer == 0 ); pointer = p; }
- void Dispose() { Assert( pointer != 0 ); delete pointer; pointer = 0; }
-
- void Swap( PointerTo<T>& r )
- {
- T* temp( r.pointer );
- r.pointer = pointer;
- pointer = temp;
- }
-
- void operator<<( PointerTo<T>& r )
- {
- Assert( pointer == 0 );
- pointer = r.pointer;
- r.pointer = 0;
- }
- };
-
- #endif
-